package com.tjhk.java.tech.syn;

/**
 * @author ：little grape
 * @description：TODO
 * @date ：2023/4/18 23:13
 *
 * synchronized主要有三种使用方式：修饰普通同步方法、修饰静态同步方法、修饰同步方法块。
 * see https://zhuanlan.zhihu.com/p/377423211
 */
public class syncTest1  implements Runnable {
 
    private static int i = 0;   //共享资源
 
    private synchronized void add() {
        i++;
    }
 
    @Override
    public void run() {
        for (int j = 0; j < 10000; j++) {
            add();
        }
    }
 
    public static void main(String[] args) throws Exception {

        syncTest1 syncTest = new syncTest1();
 
        Thread t1 = new Thread(syncTest);
        Thread t2 = new Thread(syncTest);
 
        t1.start();
        t2.start();
 
        t1.join();
        t2.join();
 
        System.out.println(i);
    }
}
